 package com.isamarasinghe.srisinhala.util;
 
 public class Sinhala
 {
   private static Sinhala sinhala = null;
 
   private String[] unicodeStringArr = new String['Ä'];
   private String[] newStringArr = new String['Ä'];
   int length;
   private Sinhala()
   {
     initialize();
     length = unicodeStringArr.length;
   }
 
   public static Sinhala getInstance() {
     if (sinhala == null)
       sinhala = new Sinhala();
     return sinhala;
   }
 
   private void initialize()
   {
     unicodeStringArr[0] = "ශ්‍රී";
     newStringArr[0] = "໹";
     unicodeStringArr[1] = "ද්‍ර";
     newStringArr[1] = "຿";
     unicodeStringArr[2] = "ක්‍ෂ";
     newStringArr[2] = "໺";
     unicodeStringArr[3] = "ළු";
     newStringArr[3] = "໸";
     unicodeStringArr[4] = "ළූ";
     newStringArr[4] = "໸๡";
     unicodeStringArr[5] = "බ්‍රේ";
     newStringArr[5] = "๧໣๫";
     unicodeStringArr[6] = "ඩ්‍රේ";
     newStringArr[6] = "๧຋๫";
     unicodeStringArr[7] = "ධ්‍රේ";
     newStringArr[7] = "๧໎๫";
     unicodeStringArr[8] = "ඹ්‍රේ";
     newStringArr[8] = "๧໩๫";
     unicodeStringArr[9] = "ඛ්‍රේ";
     newStringArr[9] = "๧๳๫";
     unicodeStringArr[10] = "බ්‍රේ";
     newStringArr[10] = "๧໣๫";
     unicodeStringArr[11] = "ච්‍රේ";
     newStringArr[11] = "๧๷๫";
     unicodeStringArr[12] = "ම්‍රේ";
     newStringArr[12] = "๧໦๫";
     unicodeStringArr[13] = "ට්‍රේ";
     newStringArr[13] = "๧຀๫";
     unicodeStringArr[14] = "ව්‍රේ";
     newStringArr[14] = "๧໵๫";
     unicodeStringArr[15] = "ධ්‍රේ";
     newStringArr[15] = "๧໎๫";
     unicodeStringArr[16] = "ඹේ";
     newStringArr[16] = "๧໩";
     unicodeStringArr[17] = "ඡේ";
     newStringArr[17] = "๧๺";
     unicodeStringArr[18] = "ඪේ";
     newStringArr[18] = "๧ຑ";
     unicodeStringArr[19] = "ඛේ";
     newStringArr[19] = "๧๳";
     unicodeStringArr[20] = "ඬේ";
     newStringArr[20] = "๧ຘ";
     unicodeStringArr[21] = "බේ";
     newStringArr[21] = "๧໣";
     unicodeStringArr[22] = "චේ";
     newStringArr[22] = "๧๷";
     unicodeStringArr[23] = "ඩේ";
     newStringArr[23] = "๧຋";
     unicodeStringArr[24] = "මේ";
     newStringArr[24] = "๧໦";
     unicodeStringArr[25] = "ජේ";
     newStringArr[25] = "๧๽";
     unicodeStringArr[26] = "ටේ";
     newStringArr[26] = "๧຀";
     unicodeStringArr[27] = "වේ";
     newStringArr[27] = "๧໵";
     unicodeStringArr[28] = "ධේ";
     newStringArr[28] = "๧໎";
     unicodeStringArr[29] = "ර්‍(.)";
     newStringArr[29] = "$1๭";
     unicodeStringArr[30] = "(.)්‍රෝ";
     newStringArr[30] = "๧$1๫๟๞";
     unicodeStringArr[31] = "(.)්‍රො";
     newStringArr[31] = "๧$1๫๟";
     unicodeStringArr[32] = "(.)්‍රේ";
     newStringArr[32] = "๧$1๫๞";
     unicodeStringArr[33] = "(.)්‍රෞ";
     newStringArr[33] = "๧$1๫๨";
     unicodeStringArr[34] = "(.)්‍රෙ";
     newStringArr[34] = "๧$1๫";
     unicodeStringArr[35] = "(.)්‍රෛ";
     newStringArr[35] = "๧๧$1๫";
     unicodeStringArr[36] = "(.)්‍යෝ";
     newStringArr[36] = "๧$1๯๟๞";
     unicodeStringArr[37] = "(.)්‍යො";
     newStringArr[37] = "๧$1๯๟";
     unicodeStringArr[38] = "(.)්‍යෙ";
     newStringArr[38] = "๧$1๯";
     unicodeStringArr[39] = "(.)්‍ය";
     newStringArr[39] = "$1๯";
     unicodeStringArr[40] = "(.)ෛ";
     newStringArr[40] = "๧๧$1";
     unicodeStringArr[41] = "(.)ෞ";
     newStringArr[41] = "๧$1๨";
     unicodeStringArr[42] = "(.)ෝ";
     newStringArr[42] = "๧$1๟๞";
     unicodeStringArr[43] = "(.)ො";
     newStringArr[43] = "๧$1๟";
     unicodeStringArr[44] = "(.)ේ";
     newStringArr[44] = "๧$1๞";
     unicodeStringArr[45] = "(.)ෙ";
     newStringArr[45] = "๧$1";
     unicodeStringArr[46] = "්‍ර";
     newStringArr[46] = "๫";
     unicodeStringArr[47] = "๧ර๞";
     newStringArr[47] = "๧໮";
     unicodeStringArr[48] = "තු";
     newStringArr[48] = "ත๩";
     unicodeStringArr[49] = "ගු";
     newStringArr[49] = "ග๩";
     unicodeStringArr[50] = "ශු";
     newStringArr[50] = "ශ๩";
     unicodeStringArr[51] = "කු";
     newStringArr[51] = "ක๩";
     unicodeStringArr[52] = "භු";
     newStringArr[52] = "භ๩";
     unicodeStringArr[53] = "ඟු";
     newStringArr[53] = "ඟ๩";
     unicodeStringArr[54] = "තූ";
     newStringArr[54] = "ත๪";
     unicodeStringArr[55] = "ගූ";
     newStringArr[55] = "ග๪";
     unicodeStringArr[56] = "ශූ";
     newStringArr[56] = "ශ๪";
     unicodeStringArr[57] = "කූ";
     newStringArr[57] = "ක๪";
     unicodeStringArr[58] = "භූ";
     newStringArr[58] = "භ๪";
     unicodeStringArr[59] = "ඟූ";
     newStringArr[59] = "ඟ๪";
     unicodeStringArr[60] = "රු";
     newStringArr[60] = "ර๠";
     unicodeStringArr[61] = "රූ";
     newStringArr[61] = "ර๡";
     unicodeStringArr[62] = "ඳි";
     newStringArr[62] = "໛";
     unicodeStringArr[63] = "ඳී";
     newStringArr[63] = "ໞ";
     unicodeStringArr[64] = "දූ";
     newStringArr[64] = "຾";
     unicodeStringArr[65] = "දී";
     newStringArr[65] = "ຬ";
     unicodeStringArr[66] = "ලූ";
     newStringArr[66] = "໴";
     unicodeStringArr[67] = "ඳූ";
     newStringArr[67] = "ໟ";
     unicodeStringArr[68] = "ඨි";
     newStringArr[68] = "ຆ";
     unicodeStringArr[69] = "ඨී";
     newStringArr[69] = "ຉ";
     unicodeStringArr[70] = "ඛ්";
     newStringArr[70] = "๳";
     unicodeStringArr[71] = "ඛි";
     newStringArr[71] = "๴";
     unicodeStringArr[72] = "ලු";
     newStringArr[72] = "໳";
     unicodeStringArr[73] = "ඛී";
     newStringArr[73] = "๵";
     unicodeStringArr[74] = "දි";
     newStringArr[74] = "ຩ";
     unicodeStringArr[75] = "ච්";
     newStringArr[75] = "๷";
     unicodeStringArr[76] = "ර්";
     newStringArr[76] = "໮";
     unicodeStringArr[77] = "රී";
     newStringArr[77] = "໲";
     unicodeStringArr[78] = "ඪි";
     newStringArr[78] = "ຏ";
     unicodeStringArr[79] = "ඪී";
     newStringArr[79] = "ຐ";
     unicodeStringArr[80] = "චි";
     newStringArr[80] = "๸";
     unicodeStringArr[81] = "ථි";
     newStringArr[81] = "຦";
     unicodeStringArr[82] = "ථී";
     newStringArr[82] = "ຨ";
     unicodeStringArr[83] = "ජී";
     newStringArr[83] = "๿";
     unicodeStringArr[84] = "චී";
     newStringArr[84] = "๹";
     unicodeStringArr[85] = "ඞ්";
     newStringArr[85] = "๶";
     unicodeStringArr[86] = "ඵී";
     newStringArr[86] = "໢";
     unicodeStringArr[87] = "ට්";
     newStringArr[87] = "຀";
     unicodeStringArr[88] = "ඵි";
     newStringArr[88] = "໡";
     unicodeStringArr[89] = "රි";
     newStringArr[89] = "໱";
     unicodeStringArr[90] = "ටී";
     newStringArr[90] = "຅";
     unicodeStringArr[91] = "ටි";
     newStringArr[91] = "຃";
     unicodeStringArr[92] = "ඩ්";
     newStringArr[92] = "຋";
     unicodeStringArr[93] = "ඩී";
     newStringArr[93] = "ຎ";
     unicodeStringArr[94] = "ඩි";
     newStringArr[94] = "ຌ";
     unicodeStringArr[95] = "ඬ්";
     newStringArr[95] = "ຘ";
     unicodeStringArr[96] = "ඬි";
     newStringArr[96] = "ຠ";
     unicodeStringArr[97] = "ධ්";
     newStringArr[97] = "໎";
     unicodeStringArr[98] = "ඬී";
     newStringArr[98] = "຤";
     unicodeStringArr[99] = "ධි";
     newStringArr[99] = "໏";
     unicodeStringArr[100] = "ධී";
     newStringArr[100] = "໚";
     unicodeStringArr[101] = "බි";
     newStringArr[101] = "໤";
     unicodeStringArr[102] = "බ්";
     newStringArr[102] = "໣";
     unicodeStringArr[103] = "බී";
     newStringArr[103] = "໥";
     unicodeStringArr[104] = "ම්";
     newStringArr[104] = "໦";
     unicodeStringArr[105] = "ජි";
     newStringArr[105] = "๾";
     unicodeStringArr[106] = "මි";
     newStringArr[106] = "໧";
     unicodeStringArr[107] = "ඹ්";
     newStringArr[107] = "໩";
     unicodeStringArr[108] = "මී";
     newStringArr[108] = "໨";
     unicodeStringArr[109] = "ඹි";
     newStringArr[109] = "໪";
     unicodeStringArr[110] = "ව්";
     newStringArr[110] = "໵";
     unicodeStringArr[111] = "ඹී";
     newStringArr[111] = "໫";
     unicodeStringArr[112] = "ඳු";
     newStringArr[112] = "ໟ";
     unicodeStringArr[113] = "වී";
     newStringArr[113] = "໷";
     unicodeStringArr[114] = "වි";
     newStringArr[114] = "໶";
     unicodeStringArr[115] = "ඞ්";
     newStringArr[115] = "๶";
     unicodeStringArr[116] = "ඡි";
     newStringArr[116] = "๻";
     unicodeStringArr[117] = "ඡ්";
     newStringArr[117] = "๺";
     unicodeStringArr[118] = "දු";
     newStringArr[118] = "຺";
     unicodeStringArr[119] = "ජ්";
     newStringArr[119] = "๽";
     unicodeStringArr[120] = "ණි";
     newStringArr[120] = "ຒ";
     unicodeStringArr[121] = "ණී";
     newStringArr[121] = "ຓ";
     unicodeStringArr[122] = "ජී";
     newStringArr[122] = "๿";
     unicodeStringArr[123] = "ඡී";
     newStringArr[123] = "๼";
     unicodeStringArr[124] = "ඩි";
     newStringArr[124] = "ຌ";
     unicodeStringArr[125] = "ඤු";
     newStringArr[125] = "๬๱຺";
     unicodeStringArr[126] = "රැ";
     newStringArr[126] = "໯";
     unicodeStringArr[127] = "රෑ";
     newStringArr[127] = "໰";
     unicodeStringArr[''] = "ං";
     newStringArr[''] = "๜";
     unicodeStringArr[''] = "ඃ";
     newStringArr[''] = "๝";
     unicodeStringArr[''] = "ැ";
     newStringArr[''] = "๠";
     unicodeStringArr[''] = "ෑ";
     newStringArr[''] = "๡";
     unicodeStringArr[''] = "ෙ";
     newStringArr[''] = "๧";
     unicodeStringArr[''] = "ු";
     newStringArr[''] = "๤";
     unicodeStringArr[''] = "ි";
     newStringArr[''] = "๢";
     unicodeStringArr[''] = "ූ";
     newStringArr[''] = "๥";
     unicodeStringArr[''] = "ී";
     newStringArr[''] = "๣";
     unicodeStringArr[''] = "ෘ";
     newStringArr[''] = "๦";
     unicodeStringArr[''] = "ෲ";
     newStringArr[''] = "๦๦";
     unicodeStringArr[''] = "ෟ";
     newStringArr[''] = "๨";
     unicodeStringArr[''] = "ා";
     newStringArr[''] = "๟";
     unicodeStringArr[''] = "්";
     newStringArr[''] = "๞";
     unicodeStringArr[''] = "◌";
     newStringArr[''] = "໻";
     unicodeStringArr[''] = "ஸ்ரீ";
     newStringArr[''] = "஘";
     unicodeStringArr[''] = "கு";
     newStringArr[''] = "஢";
     unicodeStringArr[''] = "கூ";
     newStringArr[''] = "஌";
     unicodeStringArr[''] = "ஙு";
     newStringArr[''] = "஖";
     unicodeStringArr[''] = "ஙூ";
     newStringArr[''] = "஖";
     unicodeStringArr[''] = "சு";
     newStringArr[''] = "௒";
     unicodeStringArr[''] = "சூ";
     newStringArr[''] = "௒஗";
     unicodeStringArr[''] = "ஞு";
     newStringArr[''] = "஖";
     unicodeStringArr[''] = "ஞூ";
     newStringArr[''] = "஖";
     unicodeStringArr[''] = "டு";
     newStringArr[''] = "஬";
     unicodeStringArr[''] = "டூ";
     newStringArr[''] = "௅";
     unicodeStringArr[''] = "ணு";
     newStringArr[''] = "௄";
     unicodeStringArr[''] = "ணூ";
     newStringArr[''] = "௄௑";
     unicodeStringArr[''] = "து";
     newStringArr[''] = "஧";
     unicodeStringArr[''] = "தூ";
     newStringArr[''] = "஧௑";
     unicodeStringArr[''] = "நு";
     newStringArr[''] = "஡";
     unicodeStringArr[''] = "நூ";
     newStringArr[''] = "஡௑";
     unicodeStringArr[' '] = "னு";
     newStringArr[' '] = "஠";
     unicodeStringArr['¡'] = "னூ";
     newStringArr['¡'] = "஠௑";
     unicodeStringArr['¢'] = "பு";
     newStringArr['¢'] = "஥";
     unicodeStringArr['£'] = "பூ";
     newStringArr['£'] = "஥஗";
     unicodeStringArr['¤'] = "மு";
     newStringArr['¤'] = "஫";
     unicodeStringArr['¥'] = "மூ";
     newStringArr['¥'] = "஖";
     unicodeStringArr['¦'] = "யு";
     newStringArr['¦'] = "஛";
     unicodeStringArr['§'] = "யூ";
     newStringArr['§'] = "஛஗";
     unicodeStringArr['¨'] = "ரு";
     newStringArr['¨'] = "஼";
     unicodeStringArr['©'] = "ரூ";
     newStringArr['©'] = "஑";
     unicodeStringArr['ª'] = "லு";
     newStringArr['ª'] = "௃";
     unicodeStringArr['«'] = "லூ";
     newStringArr['«'] = "௃௑";
     unicodeStringArr['¬'] = "ளு";
     newStringArr['¬'] = "஺";
     unicodeStringArr['­'] = "ளூ";
     newStringArr['­'] = "஺௓";
     unicodeStringArr['®'] = "வு";
     newStringArr['®'] = "஻";
     unicodeStringArr['¯'] = "வூ";
     newStringArr['¯'] = "஻஗";
     unicodeStringArr['°'] = "ழு";
     newStringArr['°'] = "஭";
     unicodeStringArr['±'] = "ழூ";
     newStringArr['±'] = "஖";
     unicodeStringArr['²'] = "று";
     newStringArr['²'] = "஽";
     unicodeStringArr['³'] = "றூ";
     newStringArr['³'] = "஽௑";
     unicodeStringArr['´'] = "டி";
     newStringArr['´'] = "௎";
     unicodeStringArr['µ'] = "டீ";
     newStringArr['µ'] = "஝";
     unicodeStringArr['¶'] = "(.)ௌ";
     newStringArr['¶'] = "௖$1௛";
     unicodeStringArr['·'] = "(.)ோ";
     newStringArr['·'] = "௘$1௓";
     unicodeStringArr['¸'] = "(.)ொ";
     newStringArr['¸'] = "௖$1௓";
     unicodeStringArr['¹'] = "(.)ெ";
     newStringArr['¹'] = "௖$1";
     unicodeStringArr['º'] = "(.)ே";
     newStringArr['º'] = "௘$1";
     unicodeStringArr['»'] = "(.)ை";
     newStringArr['»'] = "௙$1";
     unicodeStringArr['¼'] = "ா";
     newStringArr['¼'] = "௓";
     unicodeStringArr['½'] = "ி";
     newStringArr['½'] = "௔";
     unicodeStringArr['¾'] = "ீ";
     newStringArr['¾'] = "௕";
     unicodeStringArr['¿'] = "ு";
     newStringArr['¿'] = "௏";
     unicodeStringArr['À'] = "ூ";
     newStringArr['À'] = "௉";
     unicodeStringArr['Á'] = "்";
     newStringArr['Á'] = "௚";
     unicodeStringArr['Â'] = "◌";
     newStringArr['Â'] = "໻";
     unicodeStringArr['Ã'] = "(.)ि";
     newStringArr['Ã'] = "ि$1";
   }
 
   public String replace(String paramString) {
     
     for (int i = 0; i < length; i++) {
    	 //TODO find a way to use a StringBuilder 
    	 //instead of String, a performance bottleneck
    	 if(paramString.contains(unicodeStringArr[i]))
    		 paramString = paramString.replaceAll(unicodeStringArr[i], newStringArr[i]);
     }
     return paramString;
   }
 }
